package br.com.sistemasaude.controller;

import java.util.ArrayList;
import java.util.List;

import javax.faces.application.FacesMessage;
import javax.faces.context.FacesContext;
import javax.faces.model.SelectItem;
import br.com.sistemasaude.bean.Cobertura;
import br.com.sistemasaude.bean.CoberturaTotal;
import br.com.sistemasaude.bean.Convenio;
import br.com.sistemasaude.bean.Produto;
import br.com.sistemasaude.dao.CoberturaDAO;
import br.com.sistemasaude.dao.CoberturaDaoImpl;
import br.com.sistemasaude.dao.CoberturaTotalDAO;
import br.com.sistemasaude.dao.CoberturaTotalDaoImpl;
import br.com.sistemasaude.dao.ConvenioDAO;
import br.com.sistemasaude.dao.ConvenioDaoImp;
import br.com.sistemasaude.dao.ProdutoDAO;
import br.com.sistemasaude.dao.ProdutoDaoImp;


public class CoberturaController {


	private List<Cobertura> listaDestino;
	private List<SelectItem> listaOrigem;

	private List<CoberturaTotal> coberturaAux;
	
	/*lista de Convenios*/
	private List<Convenio> convAux = null;
	private List<SelectItem> convenios = null;
	
	private String convenio;
	FacesMessage mensagem = null;
	
	private String plano;
	private String abrangencia;


	public String salvar(){
		
		List<Cobertura> listaCobertura = getListaDestino();
		
		Convenio convenio = new Convenio();
		convenio.setNome(getConvenio());

		ConvenioDaoImp convenioDaoImp = new ConvenioDaoImp();
		Convenio conv = convenioDaoImp.buscarPorNome(convenio);
		
		Produto produto = new Produto();
		produto.setPlano(getPlano());
		produto.setAbrangencia(getAbrangencia());
		
		ProdutoDAO pDao= new ProdutoDaoImp();
		Produto prod = pDao.buscar(produto);	
		
		
		CoberturaDAO dao = new CoberturaDaoImpl();
	

		for (Cobertura cbtra : listaCobertura) {
			
			Cobertura cobertura = new Cobertura();
			cobertura.setNome(cbtra.getNome());
			cobertura.setProduto(prod);
			cobertura.setIdConvenio(conv);

			try{
				dao.salvar(cobertura);
				mensagem = new FacesMessage ("Cobertura Incluida com sucesso!");	
				FacesContext.getCurrentInstance().addMessage( "Cobertura Incluida com sucesso!",mensagem );
				return "sucesso";
			}catch (Exception e) {
				return "cadCobFail";
			}	

		} 
		return "sucesso";

	}


	/*PickList RichFaces  - lista destino*/ 
	public List<Cobertura> getListaDestino() {
		if (listaDestino == null) {
			listaDestino = new ArrayList<Cobertura>();
		}
		return listaDestino;
	}

	/*PickList RichFaces  - lista origem*/
	public List<SelectItem> getListaOrigem() {

		CoberturaTotalDAO dao = new CoberturaTotalDaoImpl();
		coberturaAux = dao.listar();
		listaOrigem = new ArrayList<SelectItem>(coberturaAux.size());

		for(CoberturaTotal coberturaT : coberturaAux){			
			listaOrigem.add(new SelectItem(coberturaT.getNome(), coberturaT.getNome()));
		}

		return listaOrigem;
	}
	
	
	/*Exibe listagem de Convenios*/
	public List<SelectItem> getListagemConvenios(){

		ConvenioDAO dao = new ConvenioDaoImp();
		convAux = dao.listar();
		convenios = new ArrayList<SelectItem>(convAux.size());

		for(Convenio convenio : convAux){			
			convenios.add(new SelectItem(convenio.getNome(),convenio.getNome()));
			}
		return convenios;
	}


	public void setListaDestino(List<Cobertura> listaDestino) {
		this.listaDestino = listaDestino;
	}
	public void setListaOrigem(List<SelectItem> listaOrigem) {
		this.listaOrigem = listaOrigem;
	}


	public List<CoberturaTotal> getCoberturaAux() {
		return coberturaAux;
	}


	public void setCoberturaAux(List<CoberturaTotal> coberturaAux) {
		this.coberturaAux = coberturaAux;
	}


	public List<SelectItem> getConvenios() {
		return convenios;
	}


	public void setConvenios(List<SelectItem> convenios) {
		this.convenios = convenios;
	}


	public String getConvenio() {
		return convenio;
	}


	public void setConvenio(String convenio) {
		this.convenio = convenio;
	}


	public FacesMessage getMensagem() {
		return mensagem;
	}


	public void setMensagem(FacesMessage mensagem) {
		this.mensagem = mensagem;
	}


	public List<Convenio> getConvAux() {
		return convAux;
	}


	public void setConvAux(List<Convenio> convAux) {
		this.convAux = convAux;
	}


	public String getPlano() {
		return plano;
	}


	public void setPlano(String plano) {
		this.plano = plano;
	}


	public String getAbrangencia() {
		return abrangencia;
	}


	public void setAbrangencia(String abrangencia) {
		this.abrangencia = abrangencia;
	}	

}


